home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / misc / football / user / html_table.rexx < prev    next >
OS/2 REXX Batch file  |  1999-11-29  |  19KB  |  572 lines

  1. /* Mode=Run */
  2. /* ***********************************************************************
  3.  
  4.      HTMLtable.rexx v1.0 (27-5-99) for THE FOOTBALL REXX SUITE
  5.     -----------------------------------------------------------
  6.      by Kevin Lambert (amiga4000@bizonline.co.uk)
  7.  
  8.     -This script will generate an HTML file of the normal league table.
  9.  
  10.     -To use HTMLtable.rexx you can run it by using the 'Run Script' button
  11.      on the Football main panel. Select HTMLtable.rexx from the file
  12.      requester and away you go. A file (????tab.html) will be written to RAM:
  13.      but this location  can be changed. View the file with any browser that
  14.      supports tables.
  15.  
  16.  
  17.     -Look through the script if you want to change some Options :-)
  18.  
  19.  
  20.      Version    Date     History
  21.     --------------------------------------------------------------------------
  22.       1.0       270599   First release.
  23.                 170699   Fixed inherited bug from League where if all teams
  24.                          had zero points, the promotion bar was still
  25.                          displayed.
  26.  
  27.       1.1       080799   Reprogrammed for usage with HTML-Templates
  28.                          speed it up
  29.                          two outputs (calling from Football or another script -flag-)
  30.                 250899   Update by Mark. Added error msg to file checks.
  31.                          Now opens file (to write to) when run from Football
  32.                          and added messages in the same scenario.
  33.                 110999   Converted to use locale. Some error messages, before
  34.                          reading the locale, will still be in English.
  35.  
  36.  
  37. ************************************************************************** */
  38. PARSE ARG league_file DateStart DateEnd flag
  39.  
  40. version      = 1
  41.  
  42. htmlpath     = "HTML/"               /* path for your HTML files */
  43. lname        = league_file           /* name for the HTML file taken from league file name */
  44. output_file  = "Data/League.output"
  45. input_file   = '.stats'
  46. input2_file  = '.sf'
  47. input3_file  = '.df'
  48. title        = '*LEAGUE_NAME='
  49. points_win   = '*POINTS_PER_WIN='
  50. points_drw   = '*POINTS_PER_DRW='
  51. points_lse   = '*POINTS_PER_LSE='
  52. points_gls   = '*POINTS_PER_GLS='
  53. releg        = '*RELEGATION='
  54. playother    = '*PLAY_OTHER='
  55. promoted     = '*PROMOTED='
  56. team_counter = '*COUNTR='
  57. team         = '*TEAM='
  58. played       = '*PLY='
  59. won          = '*WIN='
  60. drawn        = '*DRW='
  61. lost         = '*LST='
  62. goalsf       = '*GOF='
  63. goalsa       = '*GOA='
  64. points       = '*PTS='
  65. separator    = '*'
  66. teams.       = '???'
  67. teams2.      = '???'
  68. m_ply.       = '???'
  69. m_win.       = '???'
  70. m_drw.       = '???'
  71. m_lost.      = '???'
  72. m_gof.       = '???'
  73. m_goa.       = '???'
  74. m_pts.       = '???'
  75. teams_ctr    = 0
  76. playo        = 2
  77. reg          = 2
  78. ptsgls       = 0
  79. ptswin       = 2
  80. ptsdrw       = 1
  81. ptslse       = 0
  82. promo        = 0
  83. not_played   = '__   __'
  84.  
  85.  
  86. if pos("/",league_file) > 0 then
  87.    parse var league_file . "/" lname
  88.  
  89. lname = strip(lname)
  90. league_file = "Data/"league_file
  91.  
  92. if open(datafile,"Data/Football.locale",'r') then do
  93.    line = readln(datafile)
  94.    locdir = strip(line)
  95.    close(datafile)
  96. end
  97. else do
  98.    say
  99.    say "ERROR :    (HTML_Table)"
  100.    say
  101.    say "Cannot read 'Data/Football.locale' for the locale settings."
  102.    exit
  103. end
  104.  
  105. locdir = locdir"User/HTML_Table.data"
  106.  
  107. if open(datafile,"ENV:FootballRXPath",'r') then do
  108.    line = readln(datafile)
  109.    rxdir = strip(line)
  110.    close(datafile)
  111. end
  112. else
  113.    rxdir = "SYS:Rexxc/"
  114.  
  115. if exists(locdir) > 0 then do
  116.   address command rxdir'rx 'locdir
  117.   VarCount = getclip('VarCount')
  118.   do i = 1 to VarCount
  119.     interpret getclip('var.'i)
  120.   end
  121. end
  122. else do
  123.    say
  124.    say "ERROR :    (HTML_Table)"
  125.    say
  126.    say "Cannot find '"locdir"' to read locale settings."
  127.    exit
  128. end
  129.  
  130.  
  131. if exists(league_file || input_file) = 0  then do
  132.    say
  133.    say htmt_error
  134.    say
  135.    say htmt_t1"'"league_file || input_file"'."
  136.    exit
  137. end
  138. if exists(league_file || input2_file) = 0 then do
  139.    say
  140.    say htmt_error
  141.    say
  142.    say htmt_t1"'"league_file || input2_file"'."
  143.    exit
  144. end
  145. if exists(league_file || input3_file) = 0 then do
  146.    say
  147.    say htmt_error
  148.    say
  149.    say htmt_t1"'"league_file || input3_file"'."
  150.    exit
  151. end
  152.  
  153. tcount = 0
  154. /* df */
  155. if open(datafile,league_file || input3_file,'r') then do
  156.    do while ~eof(datafile)
  157.       line = readln(datafile)
  158.       /*
  159.       LEAGUE_NAME=
  160.       points_win   = '*POINTS_PER_WIN='
  161.       points_drw   = '*POINTS_PER_DRW='
  162.       points_lse   = '*POINTS_PER_LSE='
  163.       points_gls   = '*POINTS_PER_GLS='
  164.       releg        = '*RELEGATION='
  165.       playother    = '*PLAY_OTHER='
  166.       promoted     = '*PROMOTED='
  167.       */
  168.       if pos(title,line) > 0 then        league_title = delstr(line,1,13)
  169.       if pos(points_win,line) > 0 then   ptswin=delstr(line,1,16)
  170.       if pos(points_drw,line) > 0 then   ptsdrw=delstr(line,1,16)
  171.       if pos(points_lse,line) > 0 then   ptslse=delstr(line,1,16)
  172.       if pos(points_gls,line) > 0 then   ptsgls=delstr(line,1,16)
  173.       if pos(releg,line) > 0 then        reg = delstr(line,1,12)
  174.       if pos(playother,line) > 0 then    playo = delstr(line,1,12)
  175.       if pos(promoted,line) > 0 then     promo = delstr(line,1,10)
  176.  
  177.       /* Read Names Of The Teams */
  178.       if pos(separator,line) = 0 then do
  179.          line = strip(line)
  180.          tcount       = tcount + 1
  181.          teams.tcount = line
  182.       end
  183.    end
  184.    close(datafile)
  185. end
  186. else do
  187.    say
  188.    say htmt_error
  189.    say
  190.    say htmt_t2"'"league_file || input3_file"'"htmt_t4
  191.    exit
  192. end
  193.  
  194. /* stats = StartDaten, im Normalfall=0 */
  195. if open(datafile,league_file || input_file,'r') then do
  196.    do while ~eof(datafile)
  197.       line = readln(datafile)
  198. /*
  199. team         = '*TEAM='
  200. played       = '*PLY='
  201. won          = '*WIN='
  202. drawn        = '*DRW='
  203. lost         = '*LST='
  204. goalsf       = '*GOF='
  205. goalsa       = '*GOA='
  206. points       = '*PTS='
  207. */
  208.       if pos(team,line) > 0 then
  209.          teams_ctr = teams_ctr + 1
  210.       if pos(played,line) > 0 then  m_ply.teams_ctr  = delstr(line,1,5)
  211.       if pos(won,line) > 0 then     m_won.teams_ctr  = delstr(line,1,5)
  212.       if pos(drawn,line) > 0 then   m_drw.teams_ctr  = delstr(line,1,5)
  213.       if pos(lost,line) > 0 then    m_lost.teams_ctr = delstr(line,1,5)
  214.       if pos(goalsf,line) > 0 then  m_gof.teams_ctr  = delstr(line,1,5)
  215.       if pos(goalsa,line) > 0 then  m_goa.teams_ctr  = delstr(line,1,5)
  216.       if pos(points,line) > 0 then  m_pts.teams_ctr  = delstr(line,1,5)
  217.    end
  218.    close(datafile)
  219. end
  220. else do
  221.    say
  222.    say htmt_error
  223.    say
  224.    say htmt_t2"'"league_file || input_file"'"htmt_t4
  225.    exit
  226. end
  227.  
  228. /* sf = Resultate der Spiele */
  229. LineNo=0
  230. DasDatumNoch=0
  231.  
  232. if open(datafile,league_file || input2_file,'r') then do
  233.    do while ~eof(datafile)
  234.       line = readln(datafile)
  235.  
  236. /* */
  237.       If DateStart~='' then do
  238.          LineNo=LineNo+1
  239.          if (pos('*DATE: ',upper(line))=1 & (DasDatumNoch=1)) then
  240.             leave
  241.          if ((pos('*DATE: ',upper(line))=1) & (LineNo>=DateStart) & (LineNo<=DateEnd)) then do
  242.             If LineNo>=DateEnd then DasDatumNoch=1
  243.          End
  244.       End
  245. /* */
  246.       if pos(separator,line) = 0 then do
  247.  
  248.  
  249.          if pos(not_played,line) = 0 then do
  250.             home_team = strip(substr(line,1,30))
  251.             goals_for = substr(line,32,2)
  252.             goals_aga = substr(line,37,2)
  253.             away_team = strip(substr(line,41,30))
  254.  
  255.             do i=1 to teams_ctr
  256.                if home_team = teams.i then do
  257.                   m_ply.i = m_ply.i + 1
  258.                   m_gof.i = m_gof.i + goals_for
  259.                   m_goa.i = m_goa.i + goals_aga
  260.                   Select
  261.                      When goals_for < goals_aga then do
  262.                         m_lost.i= m_lost.i + 1
  263.                         m_pts.i = m_pts.i + ptslse
  264.                      end
  265.                      When goals_for > goals_aga then do
  266.                         m_won.i = m_won.i + 1
  267.                         m_pts.i = m_pts.i + ptswin
  268.                      end
  269.                      Otherwise do
  270.                         m_drw.i = m_drw.i + 1
  271.                         m_pts.i = m_pts.i + ptsdrw
  272.                      end
  273.                   end /* Select */
  274.                   m_pts.i = m_pts.i + (goals_for * ptsgls)
  275.                end /* If home */
  276.  
  277.                if away_team = teams.i then do
  278.                   m_ply.i = m_ply.i + 1
  279.                   m_gof.i = m_gof.i + goals_aga
  280.                   m_goa.i = m_goa.i + goals_for
  281.                   Select
  282.                      When goals_for < goals_aga then do
  283.                         m_won.i = m_won.i + 1
  284.                         m_pts.i = m_pts.i + ptswin
  285.                      end
  286.                      When goals_for > goals_aga then do
  287.                         m_lost.i= m_lost.i + 1
  288.                         m_pts.i = m_pts.i + ptslse
  289.                      end
  290.                      Otherwise do
  291.                         m_drw.i = m_drw.i + 1
  292.                         m_pts.i = m_pts.i + ptsdrw
  293.                      end
  294.                   end /* Select */
  295.                   m_pts.i = m_pts.i + (goals_aga * ptsgls)
  296.                end /* If away */
  297.             end /* do */
  298.          end /* If not --- --- */
  299.       end
  300.    end
  301.    close(datafile)
  302. end
  303. else do
  304.    say
  305.    say htmt_error
  306.    say
  307.    say htmt_t2"'"league_file || input2_file"'"htmt_t4
  308.    exit
  309. end
  310.  
  311. /* Daten ungeordnet in Data/League.output werfen */
  312. if open(outfile,output_file,"w") then do
  313.    do i=1 to teams_ctr
  314.       line = teams.i
  315.       line = insert(" ",line,length(line)+1,30-length(line))
  316.       mp = right(m_ply.i,3)   /* TABGAMES */
  317.       mw = right(m_won.i,3)   /* TABWON */
  318.       md = right(m_drw.i,3)   /* TABDRAWS */
  319.       ml = right(m_lost.i,3)  /* TABLOST */
  320.       mgf = right(m_gof.i,5)  /* TABOWNGOALS */
  321.       mga = right(m_goa.i,5)  /* TABOTHGOALS */
  322.       mpts = right(m_pts.i,7) /* TABPOINTS */
  323.       writech(outfile,line"   "mp" "mw" "md" "ml" "mgf" "mga"  "mpts"      ")
  324.       itemp=mgf-mga           /* TABGOALDIFF */
  325.       if itemp>0 then
  326.          itemp=insert("+",itemp,0,1)
  327.       itemp=right(itemp,4)
  328.       writeln(outfile,itemp)
  329.    end
  330.    close(outfile)
  331. end
  332. else do
  333.    say
  334.    say htmt_error
  335.    say
  336.    say htmt_t3"'"output_file"'."
  337.    exit
  338. end
  339.  
  340. address command 'Exec/footsort '
  341.  
  342.  
  343. /* Daten geordnet aus Data/League.output auslesen */
  344. if open(datafile2,output_file,'r') then do
  345.    do i=1 to tcount
  346.       line = readln(datafile2)
  347.       teams.i  = line
  348.       teams2.i = line
  349.    end
  350.    close(datafile2)
  351. end
  352. else do
  353.    say
  354.    say htmt_error
  355.    say
  356.    say htmt_t2"'"output_file"'"htmt_t4
  357.    exit
  358. end
  359.  
  360. /*
  361.                                    mp  mw  md  ml    mgf  mga      mpts      tempdiff
  362. Arsenal                            38  22  12   4    59    17       78       +42
  363. */
  364.  
  365. ctr = 0
  366. do while swapctr > 0
  367.    swapctr=9
  368.    do i=1 to tcount-1
  369.       swapdone=0
  370.       j = i + 1
  371.  
  372.       /* sortieren nach TorDiff, wenn die Punkte gleich sind */
  373.       if strip(substr(teams.i,64,7)) = strip(substr(teams.j,64,7)) then do
  374.          goaldiffa = strip(substr(teams.i,77,5))
  375.          goaldiffb = strip(substr(teams.j,77,5))
  376.          if goaldiffa < goaldiffb then do
  377.             teams.i = teams2.j
  378.             teams.j = teams2.i
  379.             teams2.i= teams.i
  380.             teams2.j= teams.j
  381.             swapdone= 1
  382.             ctr = ctr + 1
  383.          end
  384.       end
  385.       if swapdone = 1 then
  386.          break
  387.    end
  388.    if ctr = 0 then
  389.       swapctr = 0
  390.    else
  391.       ctr = 0
  392. end
  393.  
  394. posreg   = 0
  395. pospro   = 0
  396. /* this bit of code checks to see which teams are relegated */
  397. if reg > 0 then do
  398.    wherereg = tcount - reg
  399.    regpts   = strip(substr(teams.wherereg,64,7))
  400.    do i=tcount to 1 by -1
  401.       b = (((tcount-1) * playo) - strip(substr(teams.i,35,3))) * ptswin
  402.       c = strip(substr(teams.i,64,7)) + b
  403.  
  404.       /* calculates the max points avail */
  405.       if c < regpts then posreg = i
  406.  
  407.       if c = regpts & strip(substr(teams.i,35,3)) = ((tcount-1) * playo) then
  408.          posreg = i
  409.    end
  410.    if posreg < (wherereg+1) & posreg ~= 0 then      /* was 0 - set to reqd pos if higher */
  411.       posreg = wherereg + 1
  412.                                                     /* Bug fix 0305 - relegation bar problems */
  413. end
  414.  
  415. /* ---------------------------------------------- */
  416.  
  417.  
  418. if promo > 0 then do          /* this bit of code checks to see which teams are promoted */
  419.    wherepro = promo + 1
  420.    propts   = strip(substr(teams.wherepro,64,7))         /* was 64,4 */
  421.    do i=1 to tcount
  422.       if strip(substr(teams.i,35,3)) > 0 then
  423.          b = (((tcount-1) * playo) - strip(substr(teams.i,35,3))) * ptswin
  424.       else
  425.          b = 0
  426.       c = strip(substr(teams.i,64,7)) + b
  427.       if c > propts then pospro = i                 /* calculates the max points avail */
  428.    end
  429.    if pospro > (wherepro-1) & pospro ~= 0 then
  430.       pospro = wherepro - 1                         /* was 0 - set to reqd pos if lower */
  431. end
  432.  
  433. If flag=1 then do          /* called from another rexx.script */
  434.    do i=1 to tcount
  435.       var.i = "teams."i" = " d2c(34)||teams.i||d2c(34)
  436.    end
  437.    setclip('VarCount', tcount)
  438.    do i = 1 to tcount
  439.      call setclip('var.'i, var.i)
  440.    end
  441.    exit
  442. end
  443. else do
  444.    if open(stats,htmlpath||lname||"tab.html","w") = 0 then do
  445.       say
  446.       say htmt_error
  447.       say
  448.       say htmt_t2"'"htmlpath||lname||"tab.html'"htmt_t5
  449.       exit
  450.    end
  451. end
  452.  
  453.  
  454.  
  455. /* -------------------------------HTML options--------------------------------------- */
  456.  
  457.  
  458.  
  459. cs   =  2                             /* Cellspacing              */
  460. cp   =  2                             /* Cellpadding              */
  461. br   =  1                             /* Border size              */
  462. pb   =  #779977                       /* Page Background colour   */
  463. bg   =  #55ee55                       /* top team colours         */
  464. fc   =  #000000                       /* Default table font colour*/
  465. pc   =  #eeeeee                       /* Points Highlight colour  */
  466. tw   =  "80%"                         /* Table width              */
  467. /* sum of tdw percents has to be 100% */
  468. tdw_pos  = "5%"
  469. tdw_team = "50%"
  470. tdw_pld = "5%"
  471. tdw_won = "5%"
  472. tdw_drw = "5%"
  473. tdw_los = "5%"
  474. tdw_gf = "5%"
  475. tdw_ga = "5%"
  476. tdw_poi = "5%"
  477. tdw_gdiff = "5%"
  478.  
  479.  
  480.  
  481. call writeln(stats,"<HTML>")
  482. call writeln(stats,"")
  483. call writeln(stats,"<!-- Created with HTMLtable.rexx (v1.1) Script for Football -->")
  484. call writeln(stats,"<!--        A football tracking program for the Amiga       -->")
  485. call writeln(stats,"")
  486. call writeln(stats,"<HEAD>")
  487. call writeln(stats,"<TITLE>")
  488. call writeln(stats,lname" League Table")
  489. call writeln(stats,"</TITLE>")
  490. call writeln(stats,"")
  491. call writeln(stats,"<META NAME=""author""      CONTENT=""Kevin Lambert (amiga4000@bizonline.co.uk)"">")
  492. call writeln(stats,"<META NAME=""generator""   CONTENT=""HTML_Table.rexx"">")
  493. call writeln(stats,"")
  494. call writeln(stats,"</HEAD>")
  495. call writeln(stats,"")
  496. call writeln(stats,"<BODY BGCOLOR="""pb""">")
  497. call writeln(stats,"<DIV ALIGN=""center"">")
  498. call writeln(stats,"<TABLE CELLSPACING="""cs""" CELLPADDING="""cp""" BORDER="""br"""BGCOLOR=""#ccddcc"" WIDTH="""tw""">")
  499. call writeln(stats,"<TR><TH COLSPAN=""10"" BGCOLOR=""#aaaaee"">"center(league_title,88)"</TH></TR>")
  500. call writeln(stats,"<TR ALIGN=""center"" VALIGN=""top"" BGCOLOR=""#aaaaee""><TD width="""tdw_pos""" valign=""top"">"htmt_t6"</TD><TD width="""tdw_team""" valign=""top"">"htmt_t7"</TD><TD width="""tdw_pld""" valign=""top"">"htmt_t8"</TD><TD width="""tdw_won""" valign=""top"">"htmt_t9"</TD><TD width="""tdw_drw""" valign=""top"">"htmt_t10"</TD><TD width="""tdw_los""" valign=""top"">"htmt_t11"</TD><TD width="""tdw_gf""" valign=""top"">"htmt_t12"</TD><TD width="""tdw_ga""" valign=""top"">"htmt_t13"</TD><TD width="""tdw_poi""" valign=""top"">"htmt_t14"</TD><TD width="""tdw_gdiff""" valign=""top"">"htmt_t15"</TD></TR>")
  501. call writeln(stats,"<TR><TD HEIGHT=""1"" BGCOLOR=""#000000"" COLSPAN=""10""></TD></TR>")
  502.  
  503. do i=1 to tcount
  504. if i > 1 then bg = "#ccddcc"                         /* table Background colour */
  505.    if strip(substr(teams.i,76,5)) = 0 then teams.i=overlay("",teams.i,76,5," ")
  506.    if i >= posreg & posreg~=0 then teams.i = upper(teams.i)
  507.    if i >= posreg & posreg~=0 then bg = "#ff5555"    /* possible relegation background colour */
  508.    if i >= posreg & posreg~=0 then fc = "#ffffff"    /* possible relegation font colour*/
  509.    if i<10 then do
  510.       if i = 1 then teams.i = upper(teams.i)
  511.    end
  512.       teams.i=insert("</FONT></TD></TR>",teams.i,84)
  513.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,71)
  514.       teams.i=insert("</FONT></TD><TD BGCOLOR="""PC""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR=""#000000"">",teams.i,62)
  515.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,56)
  516.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,50)
  517.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,46)
  518.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,42)
  519.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,38)
  520.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,35)
  521.       teams.i=insert("</FONT></TD><TD BGCOLOR="""BG""" ALIGN=""LEFT"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">",teams.i,0)
  522.       teams.i=insert("<TR><TD BGCOLOR="""BG""" ALIGN=""CENTER"" VALIGN=""MIDDLE""><FONT COLOR="""fc""">"i")",teams.i,0)
  523.       teams.i=space(teams.i,1)
  524.             call writeln(stats,teams.i)
  525.       if reg ~= 0 then do
  526.       if i = (tcount-reg) & posreg~=0 then do       /* was posreg */
  527.          call writeln(stats,"<TR bgcolor=""#FF0000""><TD colspan=""10"" bgcolor=""#FF0000"" height=1></TD></TR>")
  528.       end
  529.    end
  530.    if promo ~= 0 then do
  531.       if i = (promo) & pospro~=0 then do        /* was pospro */
  532.          call writeln(stats,"<TR bgcolor=""#00cc00""><TD colspan=""10"" bgcolor=""#00cc00"" height=1></TD></TR>")
  533.       end
  534.    end
  535. end
  536.  
  537. call writeln(stats,"</TABLE><BR>")
  538. call writeln(stats,"<small>Created using HTML_Table.rexx script for Football 1999</small><BR>")
  539. call writeln(stats,"</DIV></BODY>")
  540. call writeln(stats,"</HTML>")
  541.  
  542. if flag ~= 1 then do
  543.    close(stats)
  544.    say
  545.    say center(htmt_t16,78)
  546.    say"-------------------------------------------------------------------------------------------"
  547.    say
  548.    say"           "htmt_t17
  549.    htmt_ul = ""
  550.    do ji=1 to length(htmt_t17)
  551.       htmt_ul = htmt_ul"-"
  552.    end
  553.    say"           "htmt_ul
  554.    say
  555.    say" HTML_Table "htmt_t18":"
  556.    say
  557.    say"  " htmlpath||lname||"tab.html"
  558.    say
  559.    say" "htmt_t19
  560.    say" "htmt_t20
  561.    say" "htmt_t21
  562.    say" "htmt_t22
  563.    say
  564.    say" "htmt_t23":"
  565.    say
  566.    say"      http://www.blue-shantung.demon.co.uk"
  567.    say
  568.    say
  569.    say"-------------------------------------------------------------------------------------------"
  570. end
  571.  
  572. exit